热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

意识识别|聊天机器人

1.常见的聊天机器人种类及技术架构聊天机器人的种类  聊天机器人的分类对于聊天机器人,通常有两种类型:一种是闲聊型的,另外一种是任务导向型的。从上述图中可以看出,

1. 常见的聊天机器人种类及技术架构

聊天机器人的种类

 

 

聊天机器人的分类

对于聊天机器人,通常有两种类型:一种是闲聊型的,另外一种是任务导向型的。从上述图中可以看出,第一个聊天机器人显然没有什么任何目的性,不是为了完成某一个任务而设计的。相反,第二个聊

天机器人是为了完成某特定的任务而设计的。在本章我们主要还是来讨论第二种类型的机器人。比如机票预定机器人、订餐机器人、心理咨询机器人、法律机器人等等。至于方法论层面,本章我们主要

来讨论基于意图识别的方法。 当然,除了这个还可以通过检索式、生成式的方式来搭建。下面我来给大家讲一下基于意图识别式方法论的思想是什么。


基于意图识别的流程

以智能音箱为例来解释整个流程当中都涉及到哪些模块。

这是一个很经典的流程。下面我们一一来看一下。第一,首先是ASR的部分。 这部分的功能其实就是语音识别,比如把人的语音转换成文本。ASR部分依赖语音识别技术。在国内,科大讯飞算是最成功的语音识别技术提供商,所以一般情况下可以直接调用他们的接口来实现ASR模块也是可以的。另外,ASR的模块通用性比较强,所以很多应用不太建议自己去开发一个ASR, 而是使用一个现成的API服务。

第二、NLU部分。

这部分的功能其实就意图识别和实体识别,比如用户说了一句话:“我想定机票,从北京出发到上海的”。那对于这句话,我们通过NLU模块就可以识别出来这个意图是“订机票”,同时,也提取出两个实体“北京”和“上海”。当然,对于订机票的意图来讲,我们只知道出发地和目的地是不够的。另外,我们也需要知道时间。如果这三个信息都具备,后台系统即可以通过数据库查询来获得满足条件的机票信息,进而让用户选择最合适的。

所以,你可以认为这种系统的核心无非就是需要从用户那里不断地获取相应的实体信息,如果获取完毕就可以调用后台数据库。相反,如果有些信息还没有获取到,那就直接跟客户去问,比如“你想什么时候出发呢?”对于聊天机器人来讲,NLU部分至关重要,因为后续所有的工作依赖于NLU的结果。对于NLU我们会在下一节里给大家做更详细的介绍。

第三、DST部分。这部分其实就是来存储对话的状态。这个状态无非就是来保存信息的完整性。比如目前的意图是订机票,那就需要来跟踪针对于这个意图的实体信息。

上图表示的就是一种状态。对于一个意图其实有多个槽位,然后每个槽位一开始是空的。随着对话的进行,槽位信息被不断地填充。最终会触发数据库调用。槽位信息的获取其实就是依赖于意图识别模

块。

第四、DPL部分。这部分是用来维护目前对话状态和需要做的动作。举个例子,比如目前的对话状态是查机票,但缺少时间的信息。那这时候,机器要做的是询问用户时间信息。这里有个问题是:如果一

开始有三个槽位,分别是时间,目的地和出发地,而且都是空的。那接下来第一个要询问的是哪方面信息呢?其实没有一个固定的答案! 这就要看我们想如何设计。 也就是处于某一种状态下,接下来要问

什么,可以完全依赖于我们提前预定号的设计逻辑来实现。这部分我们通常使用有限状态机来实现(finite state machine),具体什么叫FSM不用太在意,看完下面的这幅图应该就明白了。

从图里面可以看到,针对于每一种状态我们其实定义好了一个明确的行为(action),可以理解为接下来需要做的事情。那这些谁来定义呢? 当然要根据业务场景来决定的。把上述这些条件写在一起的话,

就能得到一个有向图:每个节点是状态,每一条边是需要做的action。

第五、NLG部分。这部分就是生成一个文本,最简单的方式是直接通过手动的方式来定义指定的文本。举个例子,如果接下来要做的action是Ask_Location, 那就直接返回:“您想在哪里开会呢?“。

所以,都可以提前定义好的。但这种方法也有一些问题比如回复的内容每次都是一样,导致用户觉得很枯燥。所以,让回复具备多样性也是一个比较重要的问题。如何让每次的回复有些不一样呢? 一种解

决方案是提前定义好多种不同的回复,然后从里面选一个来返回。还有就是回复的时候可以动态地去生成一些,但这肯定是有挑战的。

还有就是回复的时候可以动态地去生成一些,但这肯定是有挑战的。一个经典的例子是AI主播,用一个名人的音色来把提前设计好的文本读出来。当然在AI主播里,我们还需要模仿嘴型等视觉效果,所以

难度更大。TTS部分跟语音领域紧密相关,所以在这里不再阐述。如果你想做一款类似AI主播的系统,那还需要跟计算机图形学相关的技术,比如Computational Geometry。


2. 意图识别剖析

文本处理

意图识别是分类问题

我们做任何事情其实都带着意图的,而且做某一类事情的时候可以有不同的意图。举个例子,到了南航的官网,一个人可能有查机票、退机票、订座位等不同意图。所以意图识别本质上来讲就是多分类问题。输入为文字,输出为某个特定的意图。这就类似于情感分析,只不过情感分析是二分类问题,但这里的意图识别是多分类问题。

 

 

文本处理和分类

对于文本分类问题来讲,核心是文本处理。上面图里列了几个常用的文本处理技术。其实我们在之前的课程里都讲过这部分的内容。在本章的案例作业里也需要用到。等我们把文本转换成特征向量之后,就可以通过分类模型来训练了。分类模型有SVM,神经网络等等。具体选择什么模型就要看效果了。一般情况下,我们都会尝试多个然后选择其中最好的。或者,把不同种类的模型最后混合在一起使用,成为一个集成模型。


意图识别模块

 

 

所以从这里可以看到,输出一般分为两个部分,一个是意图,另外一个是从句子里抽取出来的实体。并且,每个实体有对应的类型。对于实体识别的任务,我们称之为"sequential labeling problem",一般使用序列模型来解决。在文本领域,常用的序列模型有CRF相关的系列模型,比如LSTM-CRF, BERT-BILSTM-CRF等等。具体细节暂时不做过多介绍了。

 


项目

提供一个项目,需要根据训练数据来搭建意图识别模块

完成意图识别任务。 给定一段文字,然后识别出文字所表达的意图, 如上所述。

 

 

在这个项目里,你们需要做几件事情:
做必要的文本预处理,比如分词,清洗、低频词过滤等工作。




    • 特征工程相关的工作比如转换成tf-idf,词向量等。在本项目中,你需要比较这两种方法之间的差异。





    • 构建模型,这里我们要使用SVM来训练模型,而且试着使用不同的核函数。





    • 最后,就是模型的评估了!


 

 

 

 

 

 



推荐阅读
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • MongoDB用户验证auth的权限设置及角色说明
    本文介绍了MongoDB用户验证auth的权限设置,包括readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase、cluster相关的权限以及root权限等角色的说明和使用方法。 ... [详细]
author-avatar
临海小少年
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有